import { request } from '../../request/index.js';

// pages/goods_detail/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 商品对象
    goodsItem: {},
    // 是否被收藏
    isCollected: false
  },

  // 全局商品对象
  GoodsInfo: {},

  /**
   * 生命周期函数--监听页面加载
   */
  onShow: function () {
    let pages = getCurrentPages();
    let currentPage = pages[pages.length - 1];
    let options = currentPage.options;
    const { goods_id } = options;
    // console.log(goods_id);
    this.getGoodsDetail(goods_id);
  },

  // 通过商品id获取商品详情
  async getGoodsDetail (goods_id) {
    const res = await request({
      url: '/goods/detail',
      data: { goods_id }
    })

    // 保存全局商品对象
    this.GoodsInfo = res;

    // 获取缓存中的商品收藏数组
    let collectGoods = wx.getStorageSync("collectGoods") || [];
    // 判断当前商品是否被收藏 some 只要有一个为true则返回true
    let isCollected = collectGoods.some(v => v.goods_id === this.GoodsInfo.goods_id);

    // console.log(res);
    this.setData({
      goodsItem: {
        goods_name: res.goods_name,
        goods_price: res.goods_price,
        // iphone 部分手机不识别 webp 格式, 现在前端临时修改, 最好在后台修正!
        goods_introduce: res.goods_introduce.replace(/\.webp/g, '.jpg'),
        pics: res.pics
      },
      isCollected
    })
  },

  // 点击轮播图放大预览
  handlePreviewImage (e) {
    // console.log("预览");
    // 1. 构造要预览的图片地址数组
    const urls = this.GoodsInfo.pics.map(v => v.pics_mid);
    // 接受传递过来的图片url
    const current = e.currentTarget.dataset.url;
    wx.previewImage({ current, urls });
  },

  // 点击加入购物车事件: 利用微信小程序本地存储
  handleAddCart () {
    // console.log("1");
    // 1. 获取缓存中的购物车数据
    let cart = wx.getStorageSync("cart") || [];
    // 2. 判断商品是否已存在购物车中
    let index = cart.findIndex(v => v.goods_id === this.GoodsInfo.goods_id)
    if (index === -1) {
      // 2.1 第一次添加
      this.GoodsInfo.num = 1;
      // 购物车优化: 添加一个选中状态
      this.GoodsInfo.checked = true;
      cart.push(this.GoodsInfo);
    } else {
      // 2.2 已经存在了, 则数量++
      cart[index].num++;
    }
    // 3. 把购物车重新添加回缓存中
    wx.setStorageSync("cart", cart);
    // 4. 弹窗提示
    wx.showToast({
      title: '添加成功',
      icon: 'success',
      // 加上遮罩防止错误点击
      mask: true,
    });
  },

  // 收藏商品
  handleGoodsCollect () {
    let isCollected = false;
    // 获取缓存中的收藏数组
    let collectGoods = wx.getStorageSync("collectGoods") || [];
    // 判断是否被收藏
    let index = collectGoods.findIndex(v => v.goods_id === this.GoodsInfo.goods_id);
    if (index !== -1) {
      // 已被收藏, 删除该数据
      collectGoods.splice(index, 1);
      isCollected = false;
      wx.showToast({
        title: '取消收藏!',
        mask: true
      });
    } else {
      // 没被收藏, 添加改数据
      collectGoods.push(this.GoodsInfo);
      isCollected = true;
      wx.showToast({
        title: '收藏成功!',
        mask: true
      });
    }
    // 存入缓存
    wx.setStorageSync("collectGoods", collectGoods);
    // 保存属性
    this.setData({ isCollected })
  }
})